package com.ljy.my_study.lintcode.带最小值操作的栈;
/** 
* @author James
* @date 2018年9月20日 
*/

import java.util.LinkedList;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;

public class MinStack {
	Queue<Integer> queue=new PriorityQueue<>();
	List<Integer> list=new LinkedList<>();
	
    public MinStack() {
    }

    /*
     * @param number: An integer
     * @return: nothing
     */
    public void push(int number) {
    	list.add(number);
    	queue.offer(number);
    }

    /*
     * @return: An integer
     */
    public int pop() {
    	if(list.size()>0) {
    		Integer num=list.remove(list.size()-1);
    		queue.remove(num);
    		return num;
    	}else {
    		return -1;
    	}
    }

    /*
     * @return: An integer
     */
    public int min() {
    	return queue.peek();
    }
    
}
